

import java.util.Random;

public abstract class Attore extends Elementi {

	private int life;
	private Arma arma;

	public Attore() {
		
	}

	public int getLife() {
		return life;
	}

	public void setLife(int life) {
		this.life = life;
	}

	
	public Arma getWeapon() {
		return arma;
	}

	public void setWeapon(Arma arma) {
		this.arma = arma;
	}

	public void getPotion() {
	}

	public void combattimento(Attore b) {  //combattimento tra attori
		while ((this.getLife() > 0) && (b.getLife() > 0)) {
			attacco(this, b);
			if (b.getLife() > 0) {
				attacco(b, this);
			}
		
		}
		System.out.println("Fine Battaglia!");
	}

	public void attacco(Attore a, Attore b) {  // attacchi giocatore --> mostro e mostro --> mostro
		Random r = new Random();
		double x = r.nextDouble();
		if (x > a.getWeapon().probabilita) {
			b.life = b.life - ((a.getWeapon().danno));
			System.out.println("Attacco riuscito!");
		} else
			System.out.println("Attacco fallito!");
	}

	//di seguito tutti i metodi per gli spostamenti del giocatore
	public boolean moveUp(int x, int y) {
		if ((x - 1) == -1) {
			return false;
		} else if (Prigione.getEl(x - 1, y) instanceof Pozione) {
			getPotion();
			Prigione.setEl(x - 1, y, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		} else {
			Prigione.setEl(x - 1, y, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		}
	}

	public boolean moveDown(int x, int y) {
		if ((x + 1) == Prigione.getROWS()) {
			return false;
		} else if (Prigione.getEl(x + 1, y) instanceof Pozione) {
			getPotion();
			Prigione.setEl(x + 1, y, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		} else {
			Prigione.setEl(x + 1, y, this);
			Prigione.setEl(x, y, new Vuoto());
			;
			return true;
		}
	}

	public boolean moveLeft(int x, int y) {
		if ((y - 1) == -1) {
			return false;
		} else if (Prigione.getEl(x, y - 1) instanceof Pozione) {
			getPotion();
			Prigione.setEl(x, y - 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		} else {
			Prigione.setEl(x, y - 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		}
	}

	public boolean moveRight(int x, int y) {
		if ((y + 1) == Prigione.getCOLUMN()) {
			return false;
		} else if (Prigione.getEl(x, y + 1) instanceof Pozione) {
			getPotion();
			Prigione.setEl(x, y + 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		} else {
			Prigione.setEl(x, y + 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		}
	}

	public boolean upLeft(int x, int y) {
		if (((y - 1) == -1) || ((x - 1) == -1)) {
			return false;
		} else if (Prigione.getEl(x - 1, y - 1) instanceof Pozione) {
			getPotion();
			Prigione.setEl(x - 1, y - 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		} else {
			Prigione.setEl(x - 1, y - 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		}
	}

	public boolean upRight(int x, int y) {
		if (((y + 1) == Prigione.getCOLUMN()) || ((x - 1) == -1)) {
			return false;
		} else if (Prigione.getEl(x - 1, y + 1) instanceof Pozione) {
			getPotion();
			Prigione.setEl(x - 1, y + 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		} else {
			Prigione.setEl(x - 1, y + 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		}
	}

	public boolean downLeft(int x, int y) {
		if (((y - 1) == -1) || ((x + 1) == Prigione.getROWS())) {
			return false;
		} else if (Prigione.getEl(x + 1, y - 1) instanceof Pozione) {
			getPotion();
			Prigione.setEl(x + 1, y - 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		} else {
			Prigione.setEl(x + 1, y - 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		}
	}

	public boolean downRight(int x, int y) {
		if (((y + 1) == Prigione.getCOLUMN())
				|| ((x + 1) == Prigione.getROWS())) {
			return false;
		} else if (Prigione.getEl(x + 1, y + 1) instanceof Pozione) {
			getPotion();
			Prigione.setEl(x + 1, y + 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		} else {
			Prigione.setEl(x + 1, y + 1, this);
			Prigione.setEl(x, y, new Vuoto());
			return true;
		}
	}

	

}
